package model

import (
	"database/sql"

	"torler.com/qingyue/common/types"
	"torler.com/qingyue/pkg/tools"
)

type LastestCBook struct {
	Id            types.TableId  `gorm:"primaryKey;autoIncrement"`                                    // 自增ID,主键,自动递增,创建时忽略
	OId           types.OriginId `gorm:"column:oid;type:int;not null;uniqueIndex:uidx_luc"`           //源站小说id
	SiteId        types.SourceId `gorm:"column:site_id;type:tinyint;not null;uniqueIndex:uidx_luc"`   //源站id
	BookName      string         `gorm:"column:book_name;type:varchar(50);not null;index:idx_luc_ba"` //小说名
	Author        string         `gorm:"column:author;type:varchar(20);not null;index:idx_luc_ba"`    //作者
	LastChapterId int            `gorm:"column:last_chapter_id;type:int;not null"`                    //最近更新的章节id
	UpdateTime    sql.NullTime   `gorm:"column:update_time;type:datetime(0)"`                         //从渠道站抓取到有更新的时间
	Sched         bool           `gorm:"column:sched;type:tinyint(1);default:0"`                      //是否已计划更新:这个记录是否已经被添加到抓取列表中
	types.Basic
}

func (LastestCBook) TableName() string {
	return "sp_raw_book_lastest"
}

// NewLastUpdateCBook 创建并返回一个新的 LastUpdateCBook 实例。
// 它使用提供的站点 ID、源书 ID 和最新章节 ID 初始化结构体。
//
// 参数:
//   - siteId: 站点的 ID (类型为 types.SiteId)。
//   - originBookId: 源书的 ID (类型为 types.OriginId)。
//   - lastChapterId: 最新章节的 ID (类型为 int)。
//
// 返回值:
//
//	一个指向新创建的 LastUpdateCBook 实例的指针。
func NewLastUpdateCBook(siteId types.SourceId, originBookId types.OriginId) *LastestCBook {
	return &LastestCBook{
		SiteId: siteId,
		OId:    originBookId,
	}
}
func (l *LastestCBook) SetLastChapterIdWithUrl(lastChapterUrl string) {
	l.LastChapterId = tools.LastNumberInt(lastChapterUrl)
}
